package com.jivesoftware.forum.model;


public class ForumAdminBean
{
	/**
	 * Creates a new forum. This method should always be used instead of trying
	 * to instantiate a forum directly.
	 * 
	 * @param forum
	 *            the forum.
	 * @throws UnauthorizedException
	 *             if not allowed to create a Forum.
	 * @throws ForumAlreadExistsException
	 *             if the forum name already exists.
	 */
	public ForumBean createForum(Authorization authorization, ForumBean forum)
			throws UnauthorizedException, ForumAlreadyExistsException
	{
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * update a forum.
	 * 
	 * @param forum
	 *            the forum.
	 * @throws UnauthorizedException
	 *             if not allowed to create a Forum.
	 * @throws ForumNotFoundException
	 *             if the forum does note exists.
	 */
	public void updateForum(Authorization authorization, ForumBean forum)
			throws UnauthorizedException, ForumNotFoundException
	{
		// TODO Auto-generated method stub
	}

	public void deleteForum(Authorization authorization, long forum)
			throws UnauthorizedException, ForumNotFoundException
	{
		// TODO Auto-generated method stub

	}

	public ForumBean[] forums(Authorization authorization)
			throws UnauthorizedException
	{
		// TODO Auto-generated method stub
		return null;
	}

	public ForumBean[] getForum(Authorization authorization, long forumID)
			throws ForumNotFoundException, UnauthorizedException
	{
		// TODO Auto-generated method stub
		return null;
	}

	public int getForumCount(Authorization authorization)
			throws UnauthorizedException
	{
		// TODO Auto-generated method stub
		return 0;
	}

	public void mergeForums(Authorization authorization, long forum1,
			long forum2) throws UnauthorizedException
	{
		// TODO Auto-generated method stub

	}

	public ForumBean[] popularForums(Authorization authorization)
	{
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * Returns an extended property of the forum. Each forum can have an
	 * arbitrary number of extended properties. This allows for enhanced
	 * functionality that is not part of the base interface.
	 * 
	 * @param name
	 *            the name of the property to get.
	 * @param the
	 *            value of the property specified by name.
	 */
	public String getProperty(String name)
	{
		return null;
	}

	/**
	 * Sets an extended property of the forum. Each forum can have an arbitrary
	 * number of extended properties. This allows for enhanced functionality
	 * that is not part of the base interface.
	 * <p>
	 * 
	 * If the property referenced by <code>name</code> already exists, its
	 * value will be updated.
	 * 
	 * @param name
	 *            the name of the property to set.
	 * @param value
	 *            the new value for the property.
	 * @throws UnauthorizedException
	 *             if does not have ADMIN permissions.
	 */
	public void setProperty(Authorization authorization, String name,
			String value) throws UnauthorizedException{
		
	}

	/**
	 * Deletes an extended property. If the property specified by
	 * <code>name</code> does not exist, this method will do nothing.
	 * 
	 * @param name
	 *            the name of the property to delete.
	 * @throws UnauthorizedException
	 *             if does not have ADMIN permissions.
	 */
	public void deleteProperty(Authorization authorization, String name) throws UnauthorizedException
	{
	}

	/**
	 * Returns an Iterator for the names of the forum properties.
	 * 
	 * @return an Iterator for the names of the forum properties.
	 */
	public String[] propertyNames()
	{
		return null;
	}

}
